/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.libreriaelsaber.actions;

import edu.ucsur.libreriaelsaber.beans.UsuarioBean;
import edu.ucsur.libreriaelsaber.data.DAOFactory;
import edu.ucsur.libreriaelsaber.data.UsuarioDAO;
import edu.ucsur.libreriaelsaber.forms.LoginForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author Administrator
 */
public class LoginAction extends DispatchAction {
  
  //Instanciando el DAOFactory (clase que se encarga de fabricar los objetos DAO)
  private DAOFactory factory = DAOFactory.getFactory(DAOFactory.TIPO_MYSQL);
  
  public ActionForward login(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response) throws Exception {
    UsuarioDAO usuarioDao = factory.getUsuarioData();
    //--** Capturando los valores de los controles de usuario y clave
    LoginForm loginFrm = (LoginForm)form;
    //--** Validando si el usuario existe en la BD
    UsuarioBean usuario = usuarioDao.getUsuario(loginFrm.getUsuario().getCodigoUsuario());
    if (usuario != null) {
      if (usuario.getClave() != null && usuario.getClave().equals(loginFrm.getUsuario().getClave())) {
        //Si el usuario existe y la clave es correcta, entonces guardar los datos del usuario
        //pero como variable de Sesión request.getSession()
        HttpSession session = request.getSession();
        session.setAttribute("usuarioInfo", usuario);
        return mapping.findForward("success");
      } else {
        request.setAttribute("usuario", loginFrm.getUsuario().getCodigoUsuario());
        request.setAttribute("mensajeError", "Clave no es correcta");
        return mapping.getInputForward();
      }
    } else {
      request.setAttribute("usuario", loginFrm.getUsuario().getCodigoUsuario());
      request.setAttribute("mensajeError", "Usuario no existe");
      return mapping.getInputForward();
    }   
  }
  
}
